МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
Національний університет "Львівська політехніка"
ВИКОНАННЯ АРИФМЕТИЧНИХ ОПЕРАЦІЙ І
ФУНКЦІОНАЛЬНИХ ПЕРЕТВОРЕНЬ
ІНСТРУКЦІЯ
ДО ЛАБОРАТОРНОЇ РОБОТИ № 4 З КУРСУ
"МІКРОПРОЦЕСОРНІ ПРИСТРОЇ"
для студентів базового напряму 6.160100
“Інформаційна безпека”
Затверджено
на засіданні кафедри
"Автоматика та телемеханіка"
Протокол №6 від 30.11.1999р.
ЛЬВІВ 2006
Виконання арифметичних операцій і функціональних перетворень. Інструкція до лабораторної роботи № 4 з курсу "Мікропроцесорні пристрої" для студентів базового напряму 6.160100 “Інформаційна безпека”. /Укл. І. М. Бучма, А. Й. Наконечний.- Львів: НУЛП, 2006.- 13 с.
Укладачі: І. М. Бучма, канд. техн. наук, доц.,
А. Й. Наконечний, канд. техн. наук, доц.
Відповідальний за випуск І. М. Ковела, канд. техн. наук, доц.
Рецензенти: З. Р. Мичуда, канд. техн. наук, доц.
М. В. Наконечний, канд. техн. наук, доц.
Мета роботи – вивчення способів організації підпрограм виконання арифметичних операцій; дослідити програми виконання арифметичних операцій і функціональних перетворень.
І. ТЕОРЕТИЧНІ ПОЛОЖЕННЯ
1.1. Виконання арифметичних операцій
Під час програмування мікроЕОМ на МП КР580ІК80А розповсюджений спосіб представлення чисел з фіксованою комою. Це пов’язано з відсутністю спеціальних команд, які б дозволяли працювати на МП КР580ІК80А з числами з плаваючою комою.
Двійкове 8-розрядне число з фіксованою комою можна інтерпретувати наступним чином:
а) як число зі знаком в доповняльному коді. Старший біт числа при цьому вважається знаковим і кодується 0 для додатних чисел і 1 – для від’ємних. Решта сім розрядів вказують величину числа. Діапазон зміни чисел становить +127…-128:
+12710 = 0111 11112 = 7F16
010 = 0000 00002 = 0016
-12710 = 1111 11112 = FF16
-12810 = 1000 00002 = 8016
б) як ціле додатне число без знаку в прямому коді. В цьому випадку числа змінюються в діапазоні від 0 до 255:
010 = 0000 00002 = 0016
+25510 = 1111 11112 = FF16
в) як дворозрядне число в двійково-десятковому – BINARY-CODED-DECIMAL (BCD). При цьому кожен байт розглядається як два пів байти – дві тетради, кожна з яких кодує десяткову цифру. Старші розряди D7…D4 визначають старший двійково-десятковий розряд, а молодші D3…D0 – молодший. Діапазон зміни числа від 0 до 99:
010 = 0000 00002 = 0016
+9910 = 1001 10012 = 9916
Виконання арифметичних операцій додавання, віднімання, множення, ділення, обчислення спеціальних функцій розглянемо на прикладах відповідних програм.
1.2.1. Додавання і віднімання чисел
Розглянемо програму 1 додавання масиву однобайтних чисел з отриманням двобайтового результату (програма 1 – MAIN). Доданки повинні бути розташовані в послідовних адресах пам’яті. Програма використовує підпрограму ADDB, вхідними параметрами якої є адреса першого доданку 8300, записана в парі HL, і число доданків 05, записане в регістрі В. Вихідний параметр програми MAIN – сума, старший байт якої записаний в регістрі D, а молодший – в регістрі Е.
Алгоритм програми додавання полягає в тому, що після додавання кожного елементу масиву визначається переповнення акумулятора (розряд С=1), і якщо це має місце, то вміст регістра D збільшується на 1. Таким чином, за рахунок сумування одиниць переносу одержується старший байт. Схема алгоритму підпрограми додавання масиву однобайтних чисел зображена на рис. 1.
Рис. 1. Схема алгоритму додавання масиву однобайтових чисел
Програма 1
Адреса
Машинний код
Мітка
Мнемокод
Коментар
8200
210083
MAIN
LXI H, 8300
Записати в пару HL адресу першого доданку 8300.
8203
0605
MVI B, 05
Записати в регістр В кількість доданків.
8205
CD0982
CALL ADDB
Виклик підпрограми додавання.
8208
76
HLT
Зупинити виконання програми.
8209
AF
ADDB
XRA ...